package Controlador;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import DAO.ClienteDAO;
import DAO.CuentaDAO;
import model.Cliente;
import model.Cuenta;

@ManagedBean
public class IngresarCuentaBean {
	
	//Dependencias
	@Inject
	CuentaDAO cdao;
	
	@Inject
	ClienteDAO clidao;
	
	
	//Propiedades

	Cliente cliente; 
	Cuenta cueEntity;
	private String val = "";
	List<Cliente> clientes = new ArrayList<Cliente>();
	
	@PostConstruct
	public void init(){
		cueEntity = new Cuenta();
		cliente = new Cliente();
		clientes = clidao.listar("");
	}	
	
	
	//Encapsulacion
	public Cuenta getCueEntity() {	return cueEntity;}
	public void setCueEntity(Cuenta cueEntity) {this.cueEntity = cueEntity;	}

	public Cliente getCliente() {	return cliente;	}
	public void setCliente(Cliente cliente) {		
		this.cliente = cliente;
	}
	

	public List<Cliente> getClientes() {	return this.clientes;	}
	public void setClientes(List<Cliente> clientes) {	this.clientes = clientes;	}
	
	public String getVal() {	return val;}
	public void setVal(String val) {
		System.out.println(val);
		this.val = val;
	}
	
	//ActionControllers
	public String guardar(){
		
		FacesContext ctx = FacesContext.getCurrentInstance();		
		
		try{
			cueEntity.setCliente(cliente);
			Cuenta cuenta = cdao.buscar(cueEntity.getCtaId());
			if(cuenta==null){
				cdao.insertar(cueEntity);
				ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Sistema", "La cuenta " + cueEntity.getCtaId() + " fue ingresada"));				
				cueEntity = new Cuenta();
				cliente = new Cliente();				
			}else{
				ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Sistema", "La cuenta " + cueEntity.getCtaId() + " ya existe"));					
			}			
		}catch(Exception e){
			ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Error", ""+e.getCause().getCause()));
			System.out.println(e.getMessage());
			
		}	
		return null;
	}

	
	public void buscarPropietario(){
		clientes = clidao.listar(val);
	}

}
